package org.leetcode.easy.leetcode27;

public class Solution
{

    public static int removeElement(int[] nums, int val) {
        int left = 0;
        int right = nums.length;
        while (left < right) {
            //将右侧的元素赋值给左侧的元素，如果右侧的元素==val，right--，再次判断。
            if (nums[left] == val) {
                nums[left] = nums[right - 1];
                right--;
            } else {
                left++;
            }
        }
        return left;
    }


    public static int removeElement2(int []nums,int val)
    {

        /**
         slow指针表示删除后新的数组
         fast指针的作用是寻找新数组中的元素
         通过更新操作将找到的元素放置到新的数组中
         */
        int slow=0;

        for (int fast = 0; fast < nums.length; fast++) {
            if (nums[fast]!=val)
            {
                nums[slow]=nums[fast];
                slow++;
            }
        }

        return slow;
    }



    public static void main(String[] args) {

        int [] nums ={1,2,3,5,6};
        int val = 5;

        int i = removeElement2(nums, val);
        System.out.println(i);
    }
}
